from sqlalchemy import Column, Integer, String, Text, Boolean, Date, DateTime, Time, BigInteger, Numeric, Float
from core.base.orm_model import Base


class {{ class_name }}(Base):
    __tablename__ = "{{ table_name }}"

{% for col in models %}
{% set sa_type = 'String' %}
{% if col.type in ['INT','INTEGER','SMALLINT','TINYINT','MEDIUMINT'] %}{% set sa_type = 'Integer' %}{% elif col.type in ['BIGINT'] %}{% set sa_type = 'BigInteger' %}{% elif col.type in ['VARCHAR','NVARCHAR','STRING','UNICODE','CHAR','NCHAR','UUID'] %}{% set sa_type = 'String' %}{% elif col.type in ['TEXT','UNICODETEXT','CLOB','TINYTEXT','MEDIUMTEXT','LONGTEXT'] %}{% set sa_type = 'Text' %}{% elif col.type in ['DATE'] %}{% set sa_type = 'Date' %}{% elif col.type in ['DATETIME','TIMESTAMP','TIMESTAMPTZ'] %}{% set sa_type = 'DateTime' %}{% elif col.type in ['TIME'] %}{% set sa_type = 'Time' %}{% elif col.type in ['BOOLEAN','BOOL','BIT'] %}{% set sa_type = 'Boolean' %}{% elif col.type in ['DECIMAL','NUMERIC'] %}{% set sa_type = 'Numeric' %}{% elif col.type in ['FLOAT','DOUBLE','REAL'] %}{% set sa_type = 'Float' %}{% elif col.type in ['JSON','JSONB','HSTORE'] %}{% set sa_type = 'Text' %}{% endif %}
    {{ col.name }} = Column({{ sa_type }}{% if sa_type == 'String' and col.length and col.length > 0 %}({{ col.length }}){% endif %}{% if col.is_pk %}, primary_key=True{% endif %}{% if not col.is_nullable %}, nullable=False{% endif %}{% if col.comment %}, comment="{{ col.comment }}"{% endif %})
{% endfor %}